Boomi Flow (v1)

Download OpenAPI specification:Download

Admin

Reset Password

The password reset API is only applicable to Flow Builders. For running users, the user identity is managed by the underlying Service (e.g. Salesforce, Box, Google), and therefore user resets should be performed on the underlying system, not within ManyWho. The password reset API requires two separate API calls to complete. The first API call sends the user the password reset notification. The second API call performs the actual password change, based on the token provided in the notification.

If a notification is provided, the redirectUrl property should include two parameters in the content - one for the notification result ({0}) and one for the reset token ({1}). The platform will automatically parse the notification result and callbackUri values at these positions in the content.

The result parameter has the following possible values:

  • OK: The password reset was correctly processed
  • ALREADY_PROCESSED: The password reset token has already been processed by the Platform and the user is re-using the link

To add the password verification URL to the notification, simply add PASSWORD_URL_HERE to the content of the message and the platform will replace this with the actual verification callback URL, which will in turn forward to the redirectUrl.

query Parameters
email
string

The email address of the account to initialize a password reset for

Request Body schema: application/json
notificationMessages
Array of objects (NotificationMessageAPI)

The list of notification messages to be sent.

reason
string

The reason for the notification. Typically, the reason will be provided as the 'subject' for email notifications.

redirectUrl
string

The Url to redirect the user to once this notification has been processed by the platform.

Responses

200

Success

post /api/admin/1/directory/user/password
https://flow.manywho.com/api/admin/1/directory/user/password

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "notificationMessages":
    [
    ],
  • "reason": "string",
  • "redirectUrl": "string"
}

Apply Password Reset

Apply the actual password change for an account, using the token generated from the notification callback sent in the "Reset Password" endpoint.

The token is not provided in the notification, but rather the token is provided after the user clicks on the notification link. The token will either be parsed into the provided redirectUrl (if specified) or provided in the REST response from a GET request to the notification callback URL provided in the notification.

path Parameters
token
required
string <uuid>

The token that was provided to the user as part of the notification callback

Request Body schema: application/json
password
string

The new password to be applied to the flow builder account

Responses

200

Success

post /api/admin/1/directory/user/credential/{token}
https://flow.manywho.com/api/admin/1/directory/user/credential/{token}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "password": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
true

Provisioning

Provision a Tenant

This endpoint requests the provisioning of a new tenant, and also creates a new user if one doesn't exist with the given email address. If a value is given for the notification object, then the provisioning email sent to the user will be overridden with the provided message.

Request Body schema: application/json
email
string

The email of the user

firstName
string

The first name of the user

lastName
string

The last name of the user

notification
object (NotificationRequestAPI)
password
string

The password for the user

tenantName
string

The name of the tenant to create

Responses

204

Success

post /api/admin/1/provisioning
https://flow.manywho.com/api/admin/1/provisioning

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "email": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "notification":
    {
    },
  • "password": "string",
  • "tenantName": "string"
}

States

The flow state object provides data about a specific instance of a running flow

A flow state provides in-depth information about how users have interacted with a flow, from the data that has been collected in values, to the path of map elements that were travelled, to the users who have interacted with the flow at the various stages of its execution. Flow state data is only available for active flows that have not yet completed.

This API should also not be used for reporting purposes as we have a separate reporting API and reporting infrastructure.

List States

Get a listing of all the flow states in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of states to return

page
integer <int32>
Default: 1

The current page of states

status
string

The status of the states to filter by

from
string <date-time>

An ISO 8601 datetime to filter states from

to
string <date-time>

An ISO 8601 datetime to filter states until

Responses

200

Success

get /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Delete Multiple States

Delete multiple flow states

Request Body schema: application/json

An array of IDs of the states to delete

Array
string <uuid>

Responses

200

Success

delete /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Request samples

Content type
application/json
Copy
Expand all Collapse all
[
  • "string"
]

Load State

Load an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to load

Responses

200

Success

get /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "authorizationHeader": "string",
  • "currentFlowDeveloperName": "string",
  • "currentFlowId":
    {
    },
  • "currentMapElementDeveloperName": "string",
  • "currentMapElementId": "string",
  • "currentRunningUserEmail": "string",
  • "currentRunningUserExternalId": "string",
  • "currentRunningUserId": "string",
  • "currentStreamId": "string",
  • "dateCreated": "2020-01-27T10:47:05Z",
  • "dateModified": "2020-01-27T10:47:05Z",
  • "expiresAt": "2020-01-27T10:47:05Z",
  • "externalIdentifier": "string",
  • "frames":
    [
    ],
  • "hasRootFaults": true,
  • "id": "string",
  • "isDone": true,
  • "isExpired": true,
  • "joinUri": "string",
  • "log":
    {
    },
  • "manywhoTenantId": "string",
  • "parentId": "string",
  • "precommitStateEntry":
    {
    },
  • "rootFaults":
    {
    },
  • "stateEntries":
    [
    ],
  • "storeId": "string",
  • "values":
    [
    ]
}

Delete State

Delete an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to delete

Responses

200

Success

delete /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

List States by Flow

Get a listing of all the flow states grouped by flow in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

orderBy
string
Default: "developerName"

The column to order the results by

orderDirection
string
Default: "ASC"

The direction the order will use

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow
https://flow.manywho.com/api/admin/1/states/flow

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow

Get a listing of all the flow states for a specific flow in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}
https://flow.manywho.com/api/admin/1/states/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow Version

Get a listing of all the flow states for a specific flow version in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

version
required
string <uuid>

The version ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}/{version}
https://flow.manywho.com/api/admin/1/states/flow/{id}/{version}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

States

The flow state object provides data about a specific instance of a running flow

A flow state provides in-depth information about how users have interacted with a flow, from the data that has been collected in values, to the path of map elements that were travelled, to the users who have interacted with the flow at the various stages of its execution. Flow state data is only available for active flows that have not yet completed.

This API should also not be used for reporting purposes as we have a separate reporting API and reporting infrastructure.

List States

Get a listing of all the flow states in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of states to return

page
integer <int32>
Default: 1

The current page of states

status
string

The status of the states to filter by

from
string <date-time>

An ISO 8601 datetime to filter states from

to
string <date-time>

An ISO 8601 datetime to filter states until

Responses

200

Success

get /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Delete Multiple States

Delete multiple flow states

Request Body schema: application/json

An array of IDs of the states to delete

Array
string <uuid>

Responses

200

Success

delete /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Request samples

Content type
application/json
Copy
Expand all Collapse all
[
  • "string"
]

Load State

Load an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to load

Responses

200

Success

get /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "authorizationHeader": "string",
  • "currentFlowDeveloperName": "string",
  • "currentFlowId":
    {
    },
  • "currentMapElementDeveloperName": "string",
  • "currentMapElementId": "string",
  • "currentRunningUserEmail": "string",
  • "currentRunningUserExternalId": "string",
  • "currentRunningUserId": "string",
  • "currentStreamId": "string",
  • "dateCreated": "2020-01-27T10:47:05Z",
  • "dateModified": "2020-01-27T10:47:05Z",
  • "expiresAt": "2020-01-27T10:47:05Z",
  • "externalIdentifier": "string",
  • "frames":
    [
    ],
  • "hasRootFaults": true,
  • "id": "string",
  • "isDone": true,
  • "isExpired": true,
  • "joinUri": "string",
  • "log":
    {
    },
  • "manywhoTenantId": "string",
  • "parentId": "string",
  • "precommitStateEntry":
    {
    },
  • "rootFaults":
    {
    },
  • "stateEntries":
    [
    ],
  • "storeId": "string",
  • "values":
    [
    ]
}

Delete State

Delete an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to delete

Responses

200

Success

delete /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

List States by Flow

Get a listing of all the flow states grouped by flow in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

orderBy
string
Default: "developerName"

The column to order the results by

orderDirection
string
Default: "ASC"

The direction the order will use

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow
https://flow.manywho.com/api/admin/1/states/flow

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow

Get a listing of all the flow states for a specific flow in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}
https://flow.manywho.com/api/admin/1/states/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow Version

Get a listing of all the flow states for a specific flow version in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

version
required
string <uuid>

The version ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}/{version}
https://flow.manywho.com/api/admin/1/states/flow/{id}/{version}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Stores

Stores define the location and credentials used to store data from the platform externally

A store is an outside location that implements the External Storage API, used by the platform to store data externally. They are intended as a data residency and compliance solution, for any customers that require greater control about the eventual resting place of their platform data.

Currently, the External Storage API only supports storing states externally.

List Stores

Returns a list of stores in the current tenant.

Responses

200

Success

get /api/admin/1/stores
https://flow.manywho.com/api/admin/1/stores

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create Store

Creates a new store, generating an ID, a keypair for encrypting incoming API requests and a keypair for ensuring payload integrity.

Request Body schema: application/json

Details to use when creating the store

authentication
object (StoreAuthentication)
endpoint
string

The endpoint the store is hosted at, which must support HTTPS.

name
string

A descriptive name of the store

Responses

200

Success

post /api/admin/1/stores
https://flow.manywho.com/api/admin/1/stores

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authentication":
    {
    },
  • "endpoint": "string",
  • "name": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "endpoint": "string",
  • "id": "string",
  • "name": "string",
  • "platformKey": "string",
  • "receiverKey": "string"
}

Find Store

Finds a store by ID, in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the store to find

Responses

200

Success

get /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:05Z",
  • "endpoint": "string",
  • "id": "string",
  • "name": "string",
  • "platformKey": "string",
  • "updatedAt": "2020-01-27T10:47:05Z"
}

Update Store

Updates a store by ID, in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the store to update

Request Body schema: application/json

The properties of the store to update

authentication
object (StoreAuthentication)
endpoint
string

The endpoint the store is hosted at, which must support HTTPS.

name
string

A descriptive name of the store

Responses

200

Success

put /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authentication":
    {
    },
  • "endpoint": "string",
  • "name": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:05Z",
  • "endpoint": "string",
  • "id": "string",
  • "name": "string",
  • "platformKey": "string",
  • "updatedAt": "2020-01-27T10:47:05Z"
}

Delete Store

Delete a store from the current tenant. This instantly invalidates any keys from the store that are still in-use.

path Parameters
id
required
string <uuid>

The ID of the store to delete

Responses

200

Success

delete /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Used to list all the store migrations, ordered by the creation date

Responses

200

Success

get /api/admin/1/stores/migrations
https://flow.manywho.com/api/admin/1/stores/migrations

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Migrates data to Store

Starts a migration of data from the current tenant into the selected store.

Request Body schema: application/json

The properties of the migration

batchSize
integer <int32>

A size of batch that will be used to save states during migration

storeId
string <uuid>

The id of the store where data will be migrated to

Responses

200

Success

post /api/admin/1/stores/migrations
https://flow.manywho.com/api/admin/1/stores/migrations

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "batchSize": 0,
  • "storeId": "string"
}

Tenants and Subtenants

A tenant provides a central place for flow builders to build, manage and deploy flows.

Once a tenant has been provisioned, there are various settings available to ensure security is correctly configured and data is properly managed for reporting purposes. The APIs below work for both tenants and subtenants. The only difference between a tenant and and subtenant is that flow builders can move between them using and the tenants are grouped together to ease management.

Load Tenant

Used to get the tenant object for the current tenant. Tenants provide a central place for flow builders to build, manage and deploy flows.

query Parameters
includeSubTenants
boolean
Default: false

Whether to include subtenants in the response

Responses

200

Success

get /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string",
  • "externalStorageSettings":
    {
    },
  • "id": "string",
  • "restrictions":
    {
    },
  • "securitySettings":
    {
    },
  • "stateSettings":
    {
    },
  • "subdomain": "string",
  • "subTenants":
    [
    ],
  • "tenantSettings":
    {
    }
}

Update Tenant

Used to update the tenant object for the current tenant. Tenants provide a central place for flow builders to build, manage and deploy flows.

Request Body schema: application/json
developerSummary
string

A summary of the tenant. This is typically additional information that will help explain the purpose of the tenant

externalStorageSettings
object (ExternalStorageSettingsAPI)
restrictions
object (TenantRestrictionsAPI)
securitySettings
object (SecuritySettingsAPI)

Specific security settings that should be applied to this tenant, beyond the defaults (excluding subtenants)

stateSettings
object (StateSettingsAPI)

Settings used for state persistence and reporting

subdomain
string

The requested subdomain to register for this tenant. If provided, the subdomain must be unique for the entire platform

tenantSettings
object (TenantSettingsAPI)

Settings that are specific to features used in the tenant

Responses

200

Success

post /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerSummary": "string",
  • "externalStorageSettings":
    {
    },
  • "restrictions":
    {
    },
  • "securitySettings":
    {
    },
  • "stateSettings":
    {
    },
  • "subdomain": "string",
  • "tenantSettings":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string",
  • "externalStorageSettings":
    {
    },
  • "id": "string",
  • "restrictions":
    {
    },
  • "securitySettings":
    {
    },
  • "stateSettings":
    {
    },
  • "subdomain": "string",
  • "subTenants":
    [
    ],
  • "tenantSettings":
    {
    }
}

Delete Tenant

Responses

200

Success

delete /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Delete Tenant Data

Request Body schema: application/json
cultures
boolean

Indicates if all non-default cultures should be deleted

flows
boolean

Indicates if all flows should be deleted

macros
boolean

Indicates if all macro elements should be deleted

pages
boolean

Indicates if all page elements should be deleted

services
boolean

Indicates if all service elements should be deleted

snapshots
boolean

Indicates if all flow snapshots should be deleted

states
boolean

Indicates if all flow states should be deleted

tags
boolean

Indicates if all tag elements should be deleted

types
boolean

Indicates if all type elements should be deleted

values
boolean

Indicates if all value elements should be deleted

Responses

200

Success

delete /api/admin/1/tenant/data
https://flow.manywho.com/api/admin/1/tenant/data

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "cultures": true,
  • "flows": true,
  • "macros": true,
  • "pages": true,
  • "services": true,
  • "snapshots": true,
  • "states": true,
  • "tags": true,
  • "types": true,
  • "values": true
}

Load Subtenants

Used to list all the subtenants of the current tenant.

Responses

200

Success

get /api/admin/1/tenant/subtenants
https://flow.manywho.com/api/admin/1/tenant/subtenants

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create Subtenant

Used to create a new subtenant underneath the current tenant. The developerName must be unique, and can only contain letters and numbers, with no spaces.

Request Body schema: application/json
developerName
string
developerSummary
string

Responses

200

Success

post /api/admin/1/tenant/subtenants
https://flow.manywho.com/api/admin/1/tenant/subtenants

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "id": "string"
}

Users

Users provide basic information about flow builders and running users in a tenant

Users on the platform are identified via their email. As a result, the email address determines who the user is. The email address is the unique identifier across the entire platform. When running users access a flow, a user is provisioned into the tenant on-demand. In addition, flow builders are included in the user listing.

List Users

Get a listing of all users inside the current tenant.

query Parameters
pageSize
integer <int32>
Default: 30
page
integer <int32>
Default: 1

Responses

200

Success

get /api/admin/1/users
https://flow.manywho.com/api/admin/1/users

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Add User to Tenant

Request Body schema: application/json
createdAt
string <date-time>
email
string
firstName
string
id
string <uuid>
lastName
string
password
string
role
string
tenants
Array of objects (UserTenantAPI)
tokens
Array of objects (UserTokenAPI)
verified
boolean

Responses

200

Success

post /api/admin/1/users
https://flow.manywho.com/api/admin/1/users

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:05Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "role": "string",
  • "tenants":
    [
    ],
  • "tokens":
    [
    ],
  • "verified": true
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:06Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "role": "string",
  • "tenants":
    [
    ],
  • "tokens":
    [
    ],
  • "verified": true
}

Load User

Load an individual user from the current tenant.

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:06Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "role": "string",
  • "tenants":
    [
    ],
  • "tokens":
    [
    ],
  • "verified": true
}

Update User

Update information for an individual user in the current tenant.

path Parameters
id
required
string <uuid>
Request Body schema: application/json
createdAt
string <date-time>
email
string
firstName
string
id
string <uuid>
lastName
string
password
string
role
string
tenants
Array of objects (UserTenantAPI)
tokens
Array of objects (UserTokenAPI)
verified
boolean

Responses

200

Success

put /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:05Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "role": "string",
  • "tenants":
    [
    ],
  • "tokens":
    [
    ],
  • "verified": true
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:06Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "role": "string",
  • "tenants":
    [
    ],
  • "tokens":
    [
    ],
  • "verified": true
}

Remove User from Tenant

path Parameters
id
required
string <uuid>

Responses

200

Success

delete /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Load the Current User

Get the currently-authenticated user's information

Responses

200

Success

get /api/admin/1/users/me
https://flow.manywho.com/api/admin/1/users/me

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "createdAt": "2020-01-27T10:47:06Z",
  • "email": "string",
  • "firstName": "string",
  • "id": "string",
  • "lastName": "string",
  • "password": "string",
  • "tenants":
    [
    ],
  • "verified": true
}

Load the Current User's settings

Load the settings for the currently-authenticated user

Responses

200

Success

get /api/admin/1/users/me/settings
https://flow.manywho.com/api/admin/1/users/me/settings

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "notifications":
    {
    }
}

Update the Current User's settings

Update the settings for the currently-authenticated user

Request Body schema: application/json
notifications
object (UserTenantSettingsNotificationsAPI)

Responses

200

Success

put /api/admin/1/users/me/settings
https://flow.manywho.com/api/admin/1/users/me/settings

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "notifications":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "notifications":
    {
    }
}

Assets

List Assets

Get a listing of all the assets in the current tenant

Responses

200

Success

get /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Move Asset

Move an asset from one location to another (can also be used to rename an asset).

Request Body schema: application/json
newKey
string

The key to move the asset to

oldKey
string

The key of the asset to move

Responses

200

Success

put /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "newKey": "string",
  • "oldKey": "string"
}

Create Folder

Create an empty "folder" in the current tenant's asset storage

Request Body schema: application/json
contentType
string
key
string
modifiedAt
string <date-time>
name
string
publicUrl
string
size
integer <int64>

Responses

200

Success

post /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "key": "string",
  • "modifiedAt": "2020-01-27T10:47:05Z",
  • "name": "string",
  • "publicUrl": "string",
  • "size": 0
}

Delete Asset

Delete an individual asset (or folder)

Request Body schema: application/json
contentType
string
key
string
modifiedAt
string <date-time>
name
string
publicUrl
string
size
integer <int64>

Responses

200

Success

delete /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "key": "string",
  • "modifiedAt": "2020-01-27T10:47:05Z",
  • "name": "string",
  • "publicUrl": "string",
  • "size": 0
}

Generate Upload URL

Generate a signed upload URL, which should be used to submit the asset to (using PUT). A contentType is required in this request.

Request Body schema: application/json
contentType
string
key
string
modifiedAt
string <date-time>
name
string
publicUrl
string
size
integer <int64>

Responses

200

Success

post /api/draw/1/assets/upload
https://flow.manywho.com/api/draw/1/assets/upload

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "key": "string",
  • "modifiedAt": "2020-01-27T10:47:05Z",
  • "name": "string",
  • "publicUrl": "string",
  • "size": 0
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Authentication

Authenticate flow builders before using the Admin, Draw, Packaging and Translate APIs

Once a tenant and flow builder have been provisioned, you can authenticate using the Draw API. The returned token should be used in the standard HTTP Authorization header when performing any operations against the various supported APIs.

Authenticate

Request Body schema: application/json
password
string

The password for your account in the directory

username
string

The username for your account in the directory

Responses

200

Success

post /api/draw/1/authentication
https://flow.manywho.com/api/draw/1/authentication

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "password": "string",
  • "username": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Switch Tenant

path Parameters
tenant
required
string <uuid>

The ID of the tenant to authenticate into

Responses

200

Success

get /api/draw/1/authentication/{tenant}
https://flow.manywho.com/api/draw/1/authentication/{tenant}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Draw

Get Custom Styles

path Parameters
tenantId
required
string

Responses

200

Success

get /css/tenant/{tenantId}/customstyles
https://flow.manywho.com/css/tenant/{tenantId}/customstyles

List Element Dependents

List the flattened tree of elements that depends on a specific element.

path Parameters
id
required
string <uuid>

The ID of the element to list dependents of

query Parameters
pageSize
integer <int32>
Default: 50

The number of dependents to return per page

page
integer <int32>
Default: 1

The current page number of dependents

Responses

200

Success

get /api/draw/1/dependents/{id}
https://flow.manywho.com/api/draw/1/dependents/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List Element Dependencies

List the flattened tree of elements that a specific element depends on, including all registered dependencies of dependencies.

path Parameters
id
required
string <uuid>

The ID of the element to list dependencies of

query Parameters
pageSize
integer <int32>
Default: 50

The number of dependencies to return per page

page
integer <int32>
Default: 1

The current page number of dependencies

Responses

200

Success

get /api/draw/1/dependencies/{id}
https://flow.manywho.com/api/draw/1/dependencies/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Flow

Flows represent an entire application

Flows represent an atomic package of elements that when run, are fully versioned. Flows can reference other flows using a "flow out" or by messaging other flows in the tenant using the Runtime Service. When referencing flows (parent or subflows), the platform will always take the latest activated and default version of the flow.

When editing elements in a flow, you do not do this through this section of the APIs. Each element type has its own API endpoint for managing objects, etc.

As with group elements, a flow can also have permissions. However, unlike the group element, if a user cannot authenticate to a flow, they cannot access any part of the flow state. Effectively, the flow authorization protects your flow application from any access by running users that cannot successfully authenticate with the provided authorization criteria. Therefore any group elements act as a subset of authorization. The running users must first authenticate successfully into the flow and subsequently authenticate into any group elements. Further to this, there's no requirement that the flow and group elements use the same service for authentication. Flow builders can build flows that authenticate across multiple systems, move from unauthenticated to authenticated access, etc.

List Flows

Used to list and filter existing flows.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of flows where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of flows where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter for querying flows

Responses

200

Success

get /api/draw/1/flow
https://flow.manywho.com/api/draw/1/flow

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Flow

Used to create new flows or update existing ones. The flow object represents an entire flow application.

Request Body schema: application/json
allowJumping
boolean

Indicates that the builder of the flow will allow users to jump to any position in the Flow regardless of outcomes and/or navigation.

authorization
object (GroupAuthorizationAPI)
developerName
string

The developer name for the flow. When referencing flows by name, this is the name you should use in your referencing.

developerSummary
string

The developer summary the author provided to give more information about the Flow.

editingToken
string <uuid>

A unique token for this particular editing session

id
object (FlowIdAPI)

A composite unique identifier assigned by the platform, which should not be included for new flows.

restrictions
object (FlowRestrictionsAPI)
startMapElementId
string

The unique identifier for the first element in the flow. This element is always of the START map element type.

stateExpirationLength
integer <int32>

Responses

200

Success

post /api/draw/1/flow
https://flow.manywho.com/api/draw/1/flow

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Flow

Used to get an existing flow by ID.

path Parameters
id
required
string <uuid>

The unique identifier for the Flow

Responses

200

Success

get /api/draw/1/flow/{id}
https://flow.manywho.com/api/draw/1/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Flow

Used to delete an existing flow

path Parameters
id
required
string

The unique identifier for the flow

Responses

200

Success

delete /api/draw/1/flow/{id}
https://flow.manywho.com/api/draw/1/flow/{id}

List Elements in Flow

Used to list all the elements of a type used in a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to list

Responses

200

Success

get /api/draw/1/element/flow/{flow}/{elementType}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Import Element into Flow

Used to import an existing element into a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to import

id
required
string <uuid>

The ID of the element to import

Responses

200

Success

post /api/draw/1/element/flow/{flow}/{elementType}/{id}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}/{id}

Remove Element from Flow

Used to remove an imported element from a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to remove

id
required
string <uuid>

The ID of the element to remove

Responses

200

Success

delete /api/draw/1/element/flow/{flow}/{elementType}/{id}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}/{id}

Flow Graph

The Flow Graph object provides the coordinate and basic configuration information of map and group elements.

The Flow Graph object is typically used for editing the layout of the flow for flow builders. This API should not be used for creating new flows, but rather to manage map and group elements in an existing flow. The focus of this API is to allow flow builders to make coordinate changes to these elements while ensuring other flow builders are notified of these changes and can be updated in realtime.

Update Flow Graph

Used to update a flow graph.

Request Body schema: application/json
allowJumping
boolean

Indicates that the builder of the flow will allow users to jump to any position in the Flow regardless of outcomes and/or navigation.

authorization
object (GroupAuthorizationAPI)
developerName
string

The developer name for the flow. When referencing flows by name, this is the name you should use in your referencing.

developerSummary
string

The developer summary the author provided to give more information about the Flow.

editingToken
string <uuid>

A unique token for this particular editing session

groupElements
Array of objects (GroupElementAPI)

An array of group elements that are part of the flow graph.

id
object (FlowIdAPI)

A composite unique identifier assigned by the platform, which should not be included for new flows.

mapElements
Array of objects (MapElementAPI)

An array of map elements that are part of the flow graph.

restrictions
object (FlowRestrictionsAPI)
startMapElementId
string

The unique identifier for the first element in the flow. This element is always of the START map element type.

stateExpirationLength
integer <int32>

Responses

200

Success

post /api/draw/1/graph/flow
https://flow.manywho.com/api/draw/1/graph/flow

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "groupElements":
    [
    ],
  • "id":
    {
    },
  • "mapElements":
    [
    ],
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "groupElements":
    [
    ],
  • "id":
    {
    },
  • "mapElements":
    [
    ],
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "tenantId": "string"
}

Get Flow Graph

Used to get an existing flow graph. The flow graph provides the coordinate and basic configuration information of map and group elements.

path Parameters
flow
required
string

The unique identifier for the flow

Responses

200

Success

get /api/draw/1/graph/flow/{flow}
https://flow.manywho.com/api/draw/1/graph/flow/{flow}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "groupElements":
    [
    ],
  • "id":
    {
    },
  • "mapElements":
    [
    ],
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "tenantId": "string"
}

Flow Snapshot

The flow snapshot is the package that is sent to the platform runtime engine.

Without a flow snapshot, a flow cannot be accessed by running users. The flow snapshot contains all the fully versioned elements that are needed for the flow to execute (excluding subflows). In the tooling, each time a flow is run or published, a flow snapshot is taken. This means you then have a version of the flow that can also be reverted if flow builders make a range of mistakes and would like to go back to a previous snapshot.

The flow snapshot also acts as a version system as all metadata for the flow can be accessed, and external tools can be used to diff for changes. Equally, for compliance, a customer can access the flow snapshots to get a complete picture of which flow the running user(s) were running at any particular point in time.

Activate a Flow Snapshot

Used to activate and/or make default a flow snapshot version

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

isDefault
required
boolean

If this snapshot should be the default version for running users

isActivated
required
boolean

If this snapshot should be accessible to running users to run

Responses

200

Success

post /api/draw/1/flow/activation/{flow}/{version}/{isDefault}/{isActivated}
https://flow.manywho.com/api/draw/1/flow/activation/{flow}/{version}/{isDefault}/{isActivated}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Revert a Flow Snapshot

Used to take an flow snapshot and apply it to the current flow being modelled. This is equivalent to undoing changes to a flow for all flow builders.

To revert a flow snapshot for running users, simply activate and make default the appropriate previous flow snapshot version.

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

Responses

200

Success

post /api/draw/1/flow/revert/{flow}/{version}
https://flow.manywho.com/api/draw/1/flow/revert/{flow}/{version}

List Flow Snapshots

Used to get the list of all snapshots for a particular flow.

path Parameters
flow
required
string <uuid>
query Parameters
filter
string

Responses

200

Success

get /api/draw/1/flow/snap/{flow}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create Flow Snapshot

Used to create a flow snapshot.

path Parameters
flow
required
string

The unique identifier for the flow

Request Body schema: application/json
string

Responses

200

Success

post /api/draw/1/flow/snap/{flow}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}

Request samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Flow Snapshot

Used to get a single flow snapshot.

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

Responses

200

Success

get /api/draw/1/flow/snap/{flow}/{version}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}/{version}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "groupElements":
    [
    ],
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "macroElements":
    [
    ],
  • "mapElements":
    [
    ],
  • "navigationElements":
    [
    ],
  • "pageElements":
    [
    ],
  • "restrictions":
    {
    },
  • "serviceElements":
    [
    ],
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "tagElements":
    [
    ],
  • "typeElements":
    [
    ],
  • "valueElements":
    [
    ],
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Group Element

The group element object represents any group or element in your flow that can contain map elements.

Group elements are used to add additional behavior to map elements in your flow. The group element currently only supports the ability to change the authentication context of the map elements it contains. This allows builders to change the permissions for map elements contained in the group element and restrict the ability for running users to edit or take action on any outcomes.

List Group Elements

Used to list and filter existing group elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/group
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Group Element

Used to create new group elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

Unique identifier for the flow containing the group element

Request Body schema: application/json
authorization
object (GroupAuthorizationAPI)
developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

groupElementId
string

The unique identifier for the group element that holds this group element.

height
integer <int32>

The height of the Group on the Flow diagram.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

updateByName
boolean

Indicates if the platform should attempt to find a group with the same developer name as the one provided and match them up by name as opposed to by ID.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)
width
integer <int32>

The width of the Group on the Flow diagram.

x
integer <int32>

The x location of the Group on the Flow diagram.

y
integer <int32>

The y location of the Group on the Flow diagram.

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/group
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "height": 0,
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "width": 0,
  • "x": 0,
  • "y": 0
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "height": 0,
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "width": 0,
  • "x": 0,
  • "y": 0
}

Get Group Element

Used to get an existing group element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

id
required
string <uuid>

The unique identifier for the group element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/group/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "height": 0,
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "width": 0,
  • "x": 0,
  • "y": 0
}

Delete Group Element

Used to delete an existing group element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

id
required
string <uuid>

The unique identifier for the group element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/group/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group/{id}

Macro Element

List Macro Elements

Used to list and filter existing macro elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/macro
https://flow.manywho.com/api/draw/1/element/macro

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Macro Elements

Used to create new macro elements or update existing ones.

Request Body schema: application/json
code
string

The JavaScript code for the Macro.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

updateByName
boolean

Indicates if the platform should attempt to find a Macro with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/macro
https://flow.manywho.com/api/draw/1/element/macro

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "code": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "code": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Macro Element

Used to get an existing macro element.

path Parameters
id
required
string <uuid>

The unique identifier for the macro element

Responses

200

Success

get /api/draw/1/element/macro/{id}
https://flow.manywho.com/api/draw/1/element/macro/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "code": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Macro Element

Used to delete an existing macro element.

path Parameters
id
required
string <uuid>

The unique identifier for the macro element

Responses

200

Success

delete /api/draw/1/element/macro/{id}
https://flow.manywho.com/api/draw/1/element/macro/{id}

Map Element

The map element object represents any node or element in your flow diagram.

Map elements are used to set out the actions and journey of your flow. Each map element performs an action, which may be to present the user with information, collect information, or perform logical actions such as inserting records into a database, executing business rules, or sending messages to a 3rd party application.

There's a lot of functionality packed into map elements, and that has been separated out in the sections below.

Data Actions

A data action is used to perform create, read, update, or delete (CRUD) type operations on a service. There are a number of features that make data actions particularly powerful:

  • You do not need to manage INSERT vs. UPDATE operations. We automatically track the objects in your flow and know if it is a new object to be inserted or an update to an existing object. This is done using our SAVE operation. We do not separate INSERT and UPDATE.
  • You can configure filters using our common metadata. This means you do not need to understand the query language of the underlying service - you can create queries using a standard notation and we automatically translate this notation into SQL (RDBMS), SOQL (Salesforce), ZOQL (Zuora), etc.
  • The data action automatically knows where the data needs to go. There is no need to map fields into the database as this is already configured in the type. In addition, a number of services also support “smart save” which does a smart merge of data collected/changed in the flow with data already stored in the service.
  • If you need advanced data management capabilities such as summary roll-ups or joined tables, you can configure this using "commands" (as supported by the underlying service implementation).

Listeners

A Listener is used to listen to events on objects stored or managed by a service. When an event occurs (e.g. a record is updated) in the underlying application (e.g. Salesforce), the platform will inform the executing flow of the event so it can take appropriate action.

Listeners work as follows:

  1. You send the service the objects you want to listen to (referencing the appropriate value). In addition, you specify the type of event you’re interested in (e.g. record created).
  2. The service will notify the platform when that event has happened on the associated object(s). This will populate the referenced value with the latest data from the service.
  3. You specify the outcomes (with comparisons/rules) under which you "accept" the event and the path the flow should follow. If those comparisons/rules are met, the flow will proceed to the next map element in the flow as defined by the matching outcome. If not, the flow will continue to wait until the appropriate event occurs.

Message Actions

A Message Action is used to perform general API operations on a Service. There are a number of features that make Message Actions particularly powerful:

  • Multiple inputs/multiple outputs: When executing a message action, the service can specify multiple inputs and multiple outputs post processing. E.g. you might have a service that moves a file from one folder to another (in Box). For this you’d specify the file that needs to be moved and the location you’d like to move it from and to (these would be the inputs). The outputs might be the file with revised information regarding its location and permissions.
  • They can "wait": When executing a message action, it can sometimes take some time to complete the request. Alternatively, the request may need to wait for a response. E.g. if you are sending a text message via Twilio and you want to have the flow wait for the response before proceeding. Other services may be used precisely to cause the flow to wait, e.g. our Timer service that allows you to stop or wait the flow for a timer interval or until a specific date. A "wait" can be created by building comparison/rules (e.g. the rules under which the flow will proceed down a particular path). The flow will only follow an outcome until the rules are satisfied.

It's important to note that message actions are described in the service definition. The purpose of the message actions is to map values in the flow to the inputs and outputs specified by the service.

A navigation override is used to alter the functionality of navigation in your flow. As running users go through a flow, it is often useful to alter how the navigation works. As a result, when the user gets to a particular map element, you can execute changes to the navigation. These changes will persist until altered by another map element. This can be useful in a variety of use-cases:

  • Certain parts of the navigation should only be functional once a certain portion of the flow has been completed. You can either disable or only make visible these parts of the navigation when ready. For example, you might want to disable navigation steps 3-5 until step 2 in your Flow has been completed.
  • You want the navigation to remember where the user was in a particular section of your flow. For example, the user might be going through a sequence of diagnostic steps under a "Diagnose" navigation item. If the user then clicks on an "FAQ" navigation item to answer a quick question, by default when they click back on "Diagnose" it will restart the diagnostic section. If each map element in the "Diagnose" section overrides the navigation to point to that particular map element, when the user clicks on the "Diagnose" navigation item, it will take them to that particular map element, not back to the start.

Operations

An operation is used to make a change to a value or execute a macro in your flow. Each operation can be ordered allowing builders to do operations in a particular sequence - as individual commands performed on values. Here are some examples of operations:

  • You want to assign the content of a value so the user doesn’t need to do it manually.
  • You want to get the next object from a list of objects in your flow.
  • You want to execute a macro that performs complex logic and business rules on values in your flow.

In mathematics, an operation would be something like: x = 3

Outcomes

An outcome is used to make move the running user(s) from one map element in the flow to another or from one map element into another flow. An outcome can represent a button the running user(s) can click, or it can represent a path the executing flow should follow based on logical operations in the flow. Outcomes can be combined with business rules (provided by comparison/rules) to determine the path of execution based on pre-determined logic.

Vote

The vote object is used to configure voting or multi-user approval options on an outcome. By configuring the vote, you can determine if a set number of running users or a percentage of running users (within the authentication context of the map element) must click on a particular outcome before the flow will proceed down that path. For example, before the approval is accepted, more than two running users must click on the “Approve” outcome before the flow will progress.

The implementation of the vote algorithm is determined by the service. Builders should refer to the documentation of the service being used. The first running user to click on an outcome contained in a voting map element will force the platform to “lock” the page from any further user inputs. Effectively the map element becomes read-only until the vote is completed.

List Map Elements

Used to filter existing map elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map elements

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Map Elements

Used to create new map elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

Request Body schema: application/json
clearNavigationOverrides
boolean
dataActions
Array of objects (DataActionAPI)

The list of data actions that should be executed when this map element executes. The data action objects define the values and bindings that should be used to perform CRUD operations against each service and value.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

groupElementId
string

The unique identifier for the Group that contains this Map Element. If a Map Element is inside a Group, it inherits certain behaviors of the parent Group. For example, a Swimlane Group wraps all child Map Elements in a security context.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

listeners
Array of objects (ListenerAPI)

The list of listeners that should be registered when this Map Element executes.

messageActions
Array of objects (MessageActionAPI)

The list of message actions that should be executed when this Map Element executes. The message action objects define the interface of inputs/outputs for calling against each Service message.

navigationOverrides
Array of objects (NavigationOverrideAPI)

The list of navigation overrides that should be applied when this Map Element executes.

notAuthorizedMessage
string

The content that should be shown to the user if they are not authorized to take action on this Map Element.

operations
Array of objects (OperationAPI)

The list of operations that should be performed when this Map Element executes. Operations are used to change the value of Values in the executing Flow (State).

outcomes
Array of objects (OutcomeAPI)

The list of outcomes that are available for this Map Element. An Outcome is used to connect the flow of execution from one Map Element in the Flow to another. An Outcome can take the form of a Page button, but also define system steps such as rules.

pageElementId
string
postUpdateMessage
string

The content of the message that should be posted to the collaboration stream.

postUpdateToStream
boolean

Indicates if this Map Element should post an update to the collaboration stream.

postUpdateWhenType
string

The point at which the post should be made to the collaboration stream.

statusMessage
string

The content that should be shown to the user while waiting for a system step to complete.

subflow
object (SubflowAPI)
updateByName
boolean

Indicates if the platform should attempt to find a Type with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

userContent
string

The content that should be shown to the user at this step in the Flow. This property should only be used for very simple Flows and informational UI. For anything more than simple messaging, use the Page and associate it with this Map Element using the pageElementId property.

viewMessageAction
object (MessageActionAPI)
vote
object (VoteAPI)
whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)
x
integer <int32>

The x location of the Map Element on the Flow diagram.

y
integer <int32>

The y location of the Map Element on the Flow diagram.

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "clearNavigationOverrides": true,
  • "dataActions":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "id": "string",
  • "listeners":
    [
    ],
  • "messageActions":
    [
    ],
  • "navigationOverrides":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "operations":
    [
    ],
  • "outcomes":
    [
    ],
  • "pageElementId": "string",
  • "postUpdateMessage": "string",
  • "postUpdateToStream": true,
  • "postUpdateWhenType": "string",
  • "statusMessage": "string",
  • "subflow":
    {
    },
  • "updateByName": true,
  • "userContent": "string",
  • "viewMessageAction":
    {
    },
  • "vote":
    {
    },
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "x": 0,
  • "y": 0
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "clearNavigationOverrides": true,
  • "dataActions":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "id": "string",
  • "listeners":
    [
    ],
  • "messageActions":
    [
    ],
  • "navigationOverrides":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "operations":
    [
    ],
  • "outcomes":
    [
    ],
  • "pageElementId": "string",
  • "postUpdateMessage": "string",
  • "postUpdateToStream": true,
  • "postUpdateWhenType": "string",
  • "statusMessage": "string",
  • "subflow":
    {
    },
  • "updateByName": true,
  • "userContent": "string",
  • "viewMessageAction":
    {
    },
  • "vote":
    {
    },
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "x": 0,
  • "y": 0
}

Get Map Element

Used to get an existing map element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

id
required
string <uuid>

The unique identifier for the map element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "clearNavigationOverrides": true,
  • "dataActions":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "groupElementId": "string",
  • "id": "string",
  • "listeners":
    [
    ],
  • "messageActions":
    [
    ],
  • "navigationOverrides":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "operations":
    [
    ],
  • "outcomes":
    [
    ],
  • "pageElementId": "string",
  • "postUpdateMessage": "string",
  • "postUpdateToStream": true,
  • "postUpdateWhenType": "string",
  • "statusMessage": "string",
  • "subflow":
    {
    },
  • "updateByName": true,
  • "userContent": "string",
  • "viewMessageAction":
    {
    },
  • "vote":
    {
    },
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "x": 0,
  • "y": 0
}

Delete Map Element

Used to delete an existing map element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

id
required
string <uuid>

The unique identifier for the map element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map/{id}

Navigation Element

The navigation element object provides a menu or navigation structure allowing users to move around your flow application in an unstructured way.

Navigation elements are used to set out the structure and map element locations which users can jump to directly. As a result, your map elements act more like web pages on a website than steps in a process. The base properties of the navigation element are outlined here.

List Navigation Elements

Used to filter existing navigation elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation elements

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Navigation Elements

Used to create new navigation elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

Request Body schema: application/json
developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

label
string

The label to display to the user.

navigationItems
Array of objects (NavigationItemAPI)

The navigation items that are available for this navigation. The navigation items are the "links" the user can use to navigate around your flow.

tags
Array of objects (PageTagAPI)

The list of tags that are associated with this navigation.

updateByName
boolean

Indicates if the platform should attempt to find a navigation with the same developer name as the one provided and match them up by name as opposed to by ID. This is useful when creating scripts to create flows, as you can use the developerName property as the reference as opposed to needing to know the IDs of all created elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "navigationItems":
    [
    ],
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "navigationItems":
    [
    ],
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Navigation Element

Used to get an existing navigation element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

id
required
string <uuid>

The unique identifier for the navigation element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "navigationItems":
    [
    ],
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Navigation Element

Used to delete an existing navigation element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

id
required
string <uuid>

The unique identifier for the navigation element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}

Page Element

The page element object provides the structure of your pages or screens.

The purpose of the page element is to allow flow builders to lay out the structure of the pages the users will interact with as part of the flow application. The page element is extremely extensible and allows developers to create their own components and containers as needed to give users the best possible experience using your flow application. The base properties of the page element are outlined here.

Page Containers

A page container is used to determine the scaffolding of your page. Page containers allow flow builders to set out the relative position of page components on the page. In comparison with HTML5, a page container would be equivalent to a div tag. As a result, page containers do not have any value or input, they are simply used to determine the layout or scaffolding aspects of the page.

The type of page container is determined by the containerType property and developers looking to build custom containers should use a unique containerType name to identify their container implementation. The properties outlined here are the common attributes for typical containers, however, if these do not suffice, developers should use the attributes to extend the attributes for their own specific needs. It’s important to note that each of the properties here provides features and the engine does not have any understanding of one container type from another.

Page Components

A page component is used to show or edit information on your page. In comparison with HTML5, a page component would be equivalent to an input, textarea, or similar tag. As a result, page components typically do have a value or input, and are used to prompt the user for some form or input or to view a particular piece of information on the page.

The type of page component is determined by the componentType property and developers looking to build custom components should use a unique componentType name to identify their component implementation. The properties outlined here are the common attributes for typical components, however, if these do not suffice, developers should use the attributes to extend the attributes for their own specific needs. It’s important to note that each of the properties here provides features and the engine does not have any understanding of one component type from another.

Page Conditions

Page conditions are used to make your pages dynamic. Based on a set of page rules, the page conditions can assign values to your page components but also change various properties on your page components and containers such as: required, editable, visible. Page components can also have data refreshed and objectDataRequest information dynamically assigned so you can, for example, change table filters. This gives flow builders the ability to provide single pages that can provide the running user(s) with a very dynamic experience.

Page Operation Assignment

The assignment object should be used when a value or piece of metadata for a component or container needs to be changed. For example, a page component should be set as required under a specific set of conditions. Or a page container should no longer be visible under another set of conditions.

Page Operation Filter

The filter object should be used when applying filters based on conditions. For example, the list of options in a combobox should be limited based on a checkbox being checked. The filter object can be applied to lists as well as objectDataRequests.

Page Object Reference

The page object reference is a general purpose object for referencing data and metadata on the page. It can be configured to reference data that is not formally stored into the flow state and also value elements that are.

List Page Elements

Used to list and filter existing page elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/page
https://flow.manywho.com/api/draw/1/element/page

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Page Elements

Used to create new page elements or update existing ones.

Request Body schema: application/json
attributes
object

Key value pairs that provide additional information for the page layout to be rendered. Builders should refer to the documentation of the UI code being used.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

label
string

The label for the page element. This is usually used as the title of the page.

pageComponents
Array of objects (PageComponentAPI)

The list of components to be embedded on the page. Each component is associated with a page container for relative positioning information. Conceptually, page containers are similar to HTML5 form controls and/or specific layout blocks containing images or content.

pageConditions
Array of objects (PageConditionAPI)

The list of page conditions that set out the rules that should be evaluated and the actions that should be taken if those rules evaluate to true. Page conditions make it possible to define complex UI event models.

pageContainers
Array of objects (PageContainerAPI)

The tree hierarchy of page containers that define the scaffolding of the page layout. Conceptually, page containers are similar to HTML5 div tags. If no page containers are provided, it is assumed that all components will be oriented in a vertical flow layout.

stopConditionsOnFirstTrue
boolean

Indicates if the engine should continue to execute rules and actions on the page if a condition evaluates to true. This makes it possible to deal with page rules that may conflict if all run for all events on the page.

tags
Array of objects (PageTagAPI)

The list of page tags that allow additional metadata to be applied to various page objects: components, controls and the overall page. Conceptually tags can be used to mimic HTML and CSS but can also be used to provide data to enrich functionality on the page.

updateByName
boolean

Indicates if the platform should attempt to find a page element with the same developer name as the one provided and match them up by name as opposed to by ID. This is useful when creating scripts to create flows, as you can use the developerName property as the reference as opposed to needing to know the IDs of all created elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/page
https://flow.manywho.com/api/draw/1/element/page

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "attributes":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "pageComponents":
    [
    ],
  • "pageConditions":
    [
    ],
  • "pageContainers":
    [
    ],
  • "stopConditionsOnFirstTrue": true,
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "attributes":
    {
    },
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "pageComponents":
    [
    ],
  • "pageConditions":
    [
    ],
  • "pageContainers":
    [
    ],
  • "stopConditionsOnFirstTrue": true,
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Page Element

Used to get an existing page element.

path Parameters
id
required
string <uuid>

The unique identifier for the page element

Responses

200

Success

get /api/draw/1/element/page/{id}
https://flow.manywho.com/api/draw/1/element/page/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "attributes":
    {
    },
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "label": "string",
  • "pageComponents":
    [
    ],
  • "pageConditions":
    [
    ],
  • "pageContainers":
    [
    ],
  • "stopConditionsOnFirstTrue": true,
  • "tags":
    [
    ],
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Page Element

Used to delete an existing page element.

path Parameters
id
required
string <uuid>

The unique identifier for the page element

Responses

200

Success

delete /api/draw/1/element/page/{id}
https://flow.manywho.com/api/draw/1/element/page/{id}

Service Element

Describe Service Element

Used to obtain a describe response for a service element.

Request Body schema: application/json

The details required to describe the service element

configurationValues
Array of objects (EngineValueAPI)

Configuration values provided by the end user to help the describe.

culture
object (CultureAPI)
httpAuthenticationPassword
string
httpAuthenticationUsername
string
uri
string

The Uri for the service to describe.

version
string

Responses

200

Success

post /api/draw/1/element/service/describe
https://flow.manywho.com/api/draw/1/element/service/describe

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "configurationValues":
    [
    ],
  • "culture":
    {
    },
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationUsername": "string",
  • "uri": "string",
  • "version": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "configurationValues":
    [
    ],
  • "providesAutoBinding": true,
  • "providesDatabase": true,
  • "providesFiles": true,
  • "providesIdentity": true,
  • "providesLogic": true,
  • "providesSocial": true,
  • "providesViews": true
}

Install Service Element

Used to obtain an install response for a service element.

Request Body schema: application/json

The details required to install the service element

configurationValues
Array of objects (EngineValueAPI)

Configuration values provided by the end user to help the describe.

culture
object (CultureAPI)
httpAuthenticationPassword
string
httpAuthenticationUsername
string
uri
string

The Uri for the service to describe.

version
string

Responses

200

Success

post /api/draw/1/element/service/install
https://flow.manywho.com/api/draw/1/element/service/install

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "configurationValues":
    [
    ],
  • "culture":
    {
    },
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationUsername": "string",
  • "uri": "string",
  • "version": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "actions":
    [
    ],
  • "types":
    [
    ],
  • "version": "string"
}

List Service Elements

Used to list and filter existing service elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/service
https://flow.manywho.com/api/draw/1/element/service

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Service Elements

Used to create new service elements or update existing ones.

Request Body schema: application/json
actions
Array of objects (ServiceActionRequestAPI)

The list of 'logic' operations that are available for the service. If the underlying service 'providesLogic', this is where the 'interface' for those logic operations should be stored. This allows the author to know what inputs and outputs are provided by the actions provided by this Service.

configurationValues
Array of objects (ServiceValueRequestAPI)

The list of configuration value mappings the service needs to function. Each entry provides a reference to a Value in the Flow that contains the configuration value needed by the service plugin.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

format
string

The REST messaging format to use to communicate with this service. Currently the only valid value for this property is: JSON

httpAuthenticationPassword
string
httpAuthenticationUsername
string
id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

install
object (ServiceInstallRequestAPI)
providesAutoBinding
boolean
providesDatabase
boolean

Indicates if the Service provides functionality for 'database'. Database functionality allows the author to map their Typed Objects and Lists back to this service for storage. The service then acts as the persistence implementation to store and retrieve the data as neede by the Flow.

providesFiles
boolean

Indicates if the Service provides functionality for 'files'. Files allows the author to reference files and content from the service as dynamic references - meaning that the files and content can be managed outside of ManyWho, but embedded in your Flows.

providesIdentity
boolean

Indicates if the Service provides functionality for 'identity'. Identity functionality allows the author to manage permissions to their Flows and sections of their Flows (via Swimlanes) using this service as the directory. This also allows users to login to the Flows using the information stored in this service directory.

providesLocation
boolean

Indicates if the Service provides functionality for 'location'. ManyWho optionally collects location information about the user when running a Flow. This information can be used to make decisions about permissions and also data filtering - though it is up to the service to implement this functionality.

providesLogic
boolean

Indicates if the Service provides functionality for 'logic'. Logic allows authors to make API calls as part of elements that support messaging: 'Message', 'Page', and 'Remote Page' currently. Messaging is used for asynchronous and synchronous use-cases.

providesSocial
boolean

Indicates if the Service provides functionality for 'social'. Social allows the author to add features for feed, file and user collaboration to their Flows using this service as the underlying social network.

providesViews
boolean

Indicates if the Service provides functionality for 'views'. A View allows authors to build Flows that include 'Remote Page' elements - e.g. the UI of the page is not actually hosted on the ManyWho platform, but rather the UI is provided by the external service.

sendDecryptedValues
boolean
updateByName
boolean

Indicates if the platform should attempt to find a Service with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created elements.

uri
string

The location of the Service implementation for the platform to callout against.

version
string
whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/service
https://flow.manywho.com/api/draw/1/element/service

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "actions":
    [
    ],
  • "configurationValues":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "format": "string",
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationUsername": "string",
  • "id": "string",
  • "install":
    {
    },
  • "providesAutoBinding": true,
  • "providesDatabase": true,
  • "providesFiles": true,
  • "providesIdentity": true,
  • "providesLocation": true,
  • "providesLogic": true,
  • "providesSocial": true,
  • "providesViews": true,
  • "sendDecryptedValues": true,
  • "updateByName": true,
  • "uri": "string",
  • "version": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "actions":
    [
    ],
  • "configurationValues":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "format": "string",
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationUsername": "string",
  • "id": "string",
  • "install":
    {
    },
  • "providesAutoBinding": true,
  • "providesDatabase": true,
  • "providesFiles": true,
  • "providesIdentity": true,
  • "providesLocation": true,
  • "providesLogic": true,
  • "providesSocial": true,
  • "providesViews": true,
  • "sendDecryptedValues": true,
  • "updateByName": true,
  • "uri": "string",
  • "version": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Service Element

Used to get an existing service element.

path Parameters
id
required
string <uuid>

The unique identifier for the service element

Responses

200

Success

get /api/draw/1/element/service/{id}
https://flow.manywho.com/api/draw/1/element/service/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "actions":
    [
    ],
  • "configurationValues":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "format": "string",
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationUsername": "string",
  • "id": "string",
  • "install":
    {
    },
  • "providesAutoBinding": true,
  • "providesDatabase": true,
  • "providesFiles": true,
  • "providesIdentity": true,
  • "providesLocation": true,
  • "providesLogic": true,
  • "providesSocial": true,
  • "providesViews": true,
  • "sendDecryptedValues": true,
  • "updateByName": true,
  • "uri": "string",
  • "version": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Service Element

Used to delete an existing service element.

path Parameters
id
required
string <uuid>

The unique identifier for the service element

Responses

200

Success

delete /api/draw/1/element/service/{id}
https://flow.manywho.com/api/draw/1/element/service/{id}

Tag Element

The tag element object provides additional runtime data to your page element containers/components and navigation elements/items.

The purpose of the tag element is to add flexibility to your flow application user experience. The components, containers and navigation items in your flow can benefit from having access to the flow state to get more contextual information. For example, if you have a numeric input field, it may be useful to know the possible range or numeric values that can be provided by the end user - where that range depends on logic in the flow. The components, containers and navigation items also supports attributes and these are often sufficient for many use-cases. As a result, only use the tag element if you need information that is very specific to the flow state for particular running user(s).

List Tag Elements

Used to list and filter existing tag elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/tag
https://flow.manywho.com/api/draw/1/element/tag

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Tag Elements

Used to create new tag elements or update existing ones.

Request Body schema: application/json
contentType
string

The type of Value the Tag holds. As part of the Page layout creation, the Tag will be associated with a Value. The Value bound to this Tag must be of the same content type.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

typeElementId
string

The unique identifier for the Type and object or list data must adhere to in structure (the Type basically defines the 'interface' that all objects and lists stored in this Value must implement). This property is only applicable for ContentObject and ContentList content types. As part of the Page layout creation, the Tag will be associated with a Value. The Value bound to this Tag must be of the same Type.

updateByName
boolean

Indicates if the platform should attempt to find a Tag with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/tag
https://flow.manywho.com/api/draw/1/element/tag

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Tag Element

Used to get an existing tag element.

path Parameters
id
required
string <uuid>

The unique identifier for the tag element

Responses

200

Success

get /api/draw/1/element/tag/{id}
https://flow.manywho.com/api/draw/1/element/tag/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Tag Element

Used to delete an existing tag element.

path Parameters
id
required
string <uuid>

The unique identifier for the tag element

Responses

200

Success

delete /api/draw/1/element/tag/{id}
https://flow.manywho.com/api/draw/1/element/tag/{id}

Type Element

The type element object defines the structure of objects and lists in the flow.

The purpose of the type element is to allow flow builders to determine the business objects that will be used in the flow. Often the type elements are provided when the flow builder installs a new service element, however, flow builders can define their own type elements as needed to support the objectives of the flow. The type element also provides the bindings back to the service elements that can save, read or delete data of the same structure. As a result, the type element maps from friendly business objects to underlying storage implementations as provided by the service element. The base properties of the type element are outlined here.

Bindings

A binding is used to map properties in the type to database fields in the service. The mapping does not need to be directly to database tables in the service, however, the binding should provide unique identifier information necessary for the service element to put the provided values back to the correct storage locations. The binding is typically pre-configured as part of the type installation process. However, it is possible for flow builders to define bindings manually.

List Type Elements

Used to list and filter existing type elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/type
https://flow.manywho.com/api/draw/1/element/type

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Type Elements

Used to create new type elements or update existing ones.

query Parameters
overrideService
boolean
Default: false

Whether to allow updates to a type that is associated with a service

Request Body schema: application/json
bindings
Array of objects (TypeElementBindingAPI)

The list of bindings for the Type. A binding holds the mapping of properties to tables and fields in an underlying Service. A binding is not required for a Type if there is no plan to save the data in an external data store. When creating a binding, you will need to have saved the initial Type first so you have the identifiers for the various properties in the Type that need to be bound.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

properties
Array of objects (TypeElementPropertyAPI)

The list of properties for this Type. A property is very similar to a field in a table - it represents the structure of the data that will be stored in Values that use this Type.

serviceElementDeveloperName
string
serviceElementId
string
updateByName
boolean

Indicates if the platform should attempt to find a Type with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/type
https://flow.manywho.com/api/draw/1/element/type

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "bindings":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ],
  • "serviceElementDeveloperName": "string",
  • "serviceElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "bindings":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ],
  • "serviceElementDeveloperName": "string",
  • "serviceElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Type Element

Used to get an existing type element.

path Parameters
id
required
string <uuid>

The unique identifier for the type element

Responses

200

Success

get /api/draw/1/element/type/{id}
https://flow.manywho.com/api/draw/1/element/type/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "bindings":
    [
    ],
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ],
  • "serviceElementDeveloperName": "string",
  • "serviceElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Type Element

Used to delete an existing type element.

path Parameters
id
required
string <uuid>

The unique identifier for the type element

Responses

200

Success

delete /api/draw/1/element/type/{id}
https://flow.manywho.com/api/draw/1/element/type/{id}

Value Element

The value element object stores data collected in the flow state.

The purpose of the value element is to allow flow builders to determine how data collected from running user(s) or external services will be stored and used. The value element represents the memory for the flow application so data gathered can be later saved, updated, or viewed. The base properties of the value element are outlined here.

List Value Elements

Used to list and filter existing value elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

contentType
Array of strings

Optional. One or more content types to filter by

Responses

200

Success

get /api/draw/1/element/value
https://flow.manywho.com/api/draw/1/element/value

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Value Elements

Used to create new value elements or update existing ones.

Request Body schema: application/json
access
string

Sets the level of access this Value has to change. In many situations, Values can only be changed by the operations defined in your Flow and the value is not exposed outside of the Flow. Alternatively, you may wish to allow the value of the Value to be assigned at initialization.

contentFormat
string
contentType
string

The type of content the Value holds.

defaultContentValue
string

The default content value for the Value before any operations have been performed. This is for primitive Values.

defaultObjectData
Array of objects (ObjectAPI)

The default object data for the Value before any operations have been performed. This is for Object and List Values.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

elementType
string

The type of element this metadata represents.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

initializationOperations
Array of objects (OperationAPI)

The operations that should be performed when the object is initialized. Initialization operations are only appropriate for Values of content type ContentObject.

isFixed
boolean

Indicates if the value of the Value can be changed by operations in the Flow or from outside systems. If this property is set to 'true', the Value will act like a 'constant' - i.e. it can't be changed by anyone except the Flow author at design time.

isVersionless
boolean
typeElementDeveloperName
string
typeElementId
string

The unique identifier for the Type and object or list data must adhere to in structure (the Type basically defines the 'interface' that all objects and lists stored in this Value must implement). This property is only applicable for ContentObject and ContentList content types.

updateByName
boolean

Indicates if the platform should attempt to find a Value with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/value
https://flow.manywho.com/api/draw/1/element/value

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "access": "string",
  • "contentFormat": "string",
  • "contentType": "string",
  • "defaultContentValue": "string",
  • "defaultObjectData":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "initializationOperations":
    [
    ],
  • "isFixed": true,
  • "isVersionless": true,
  • "typeElementDeveloperName": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "access": "string",
  • "contentFormat": "string",
  • "contentType": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "defaultContentValue": "string",
  • "defaultObjectData":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "initializationOperations":
    [
    ],
  • "isFixed": true,
  • "isVersionless": true,
  • "typeElementDeveloperName": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Value Element

Used to get an existing value element.

path Parameters
id
required
string <uuid>

The unique identifier for the value element

Responses

200

Success

get /api/draw/1/element/value/{id}
https://flow.manywho.com/api/draw/1/element/value/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "access": "string",
  • "contentFormat": "string",
  • "contentType": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "defaultContentValue": "string",
  • "defaultObjectData":
    [
    ],
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "initializationOperations":
    [
    ],
  • "isFixed": true,
  • "isVersionless": true,
  • "typeElementDeveloperName": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Value Element

Used to delete an existing value element.

path Parameters
id
required
string <uuid>

The unique identifier for the value element

Responses

200

Success

delete /api/draw/1/element/value/{id}
https://flow.manywho.com/api/draw/1/element/value/{id}

List Value Element References

Used to list and filter value element references, which are in a condensed format to help flow builders create merge fields in content.

Supported Element Types

VARIABLE: A reusable value containing data of the specified content type LITERAL: A simple, often single use value type containing a text or numeric value

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
contentType
Array of strings

Optional. One or more content types to filter by

elementType
Array of strings

Optional. One or more element types to filter by

id
Array of strings <uuid>

Optional. The ID of a value to filter by

typeElementId
Array of strings <uuid>

Optional. The ID of a type to filter by

access
Array of strings

Optional. The access type to filter by

filter
string

The filter used for querying

isFixed
boolean
Default: false

Optional. Whether to filter by fixed values

search
string

Optional. A search term to filter the results by

flow
string <uuid>

Optional. The ID of a flow to filter by

Responses

200

Success

get /api/draw/1/element/value/reference
https://flow.manywho.com/api/draw/1/element/value/reference

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Log

Get Log

Get the execution log of a state

path Parameters
flowId
required
string
stateId
required
string

Responses

200

Success

get /api/log/{flowId}/{stateId}
https://flow.manywho.com/api/log/{flowId}/{stateId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "entries":
    {
    },
  • "flowDeveloperName": "string",
  • "flowId": "string",
  • "id": "string",
  • "stateId": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Notifications

The notifications API allows you to view any notifications sent to your or inside your tenant.

List Notifications

Get all the notifications that have been sent from inside a tenant

query Parameters
type
string

Filter by type, currently supports: delete_all, delete_tenant, fault, password_reset, tenant_creation, warning

Responses

200

Success

get /api/notifications/1
https://flow.manywho.com/api/notifications/1

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

List Notifications for User

Get all the unread notifications that have been sent to the currently logged in user, across all tenants

query Parameters
type
string

Filter by type, currently supports: delete_all, delete_tenant, fault, password_reset, tenant_creation, warning

includeRead
boolean
Default: false

Also include read eamil.

Responses

200

Success

get /api/notifications/1/me
https://flow.manywho.com/api/notifications/1/me

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Finds a notification for the current user

Finds the notification and marks it as read

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/notifications/1/{id}
https://flow.manywho.com/api/notifications/1/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "content": "string",
  • "createdAt": "2020-01-27T10:47:06Z",
  • "id": "string",
  • "isRead": true,
  • "subject": "string",
  • "tenant":
    {
    },
  • "type": "string",
  • "userId": "string"
}

Mark all notifications as read for the current user

Marks all the notifications for the current user as read

Responses

200

Success

post /api/notifications/1/me/read
https://flow.manywho.com/api/notifications/1/me/read

Package

The packaging API allows you to move a Flow from one tenant to another. This can be handy for a few example reasons:

  • You have Sub-Tenants that you use for testing or team based development of Flows. You then have a master tenant for all “production” Flows.
  • You have a library of useful Flows that you want to distribute as templates.
  • You want to create a “store” of Flows that can be used by your customers to help them leverage and adapt your existing intellectual property.
A few things to consider with packaging:
  1. The source Tenant should be used for editing. If you make changes in the target Tenant and attempt to apply those back to the source, you can accidentially overwrite changes in the source, not applied in the target.
  2. Packaging overwrites the existing Flow with the same Flow identifier. As a result, you can apply upgrades to a target Tenant.
  3. If you plan to use a Service in multiple Tenants, make sure you create the Service in the source Tenant and distribute a Flow package for all target Tenants. If a Service is installed in each Target Tenant, it will be duplicated as we do not “merge” Services even if they point to the same Service end-point.
  4. Do not refresh the Service in the Target Tenant if you are simply changing the endpoint URL. Packaging only pulls in the Types that are used by the Flow. If you refresh the whole Service in the Target Tenant, you can end up with duplicate Types.
  5. When you export a Flow Package, you will receive a String that contains all the information needed to execute your Flow.
  6. We do not automatically Package sub-Flows.
  7. You can only export a package of the Flow if that Flow has a SnapShot (generated by either Running or Publishing the Flow).
The package file should never be altered. Please refer to the SnapShot APIs if you need to get information about your Flows.

Create Package for Flow

Create a package of the latest version of a flow snapshot

path Parameters
id
required
string

The ID of the flow

query Parameters
nullPasswords
boolean
Default: false

Whether the package should include password values.

Responses

200

Success

get /api/package/1/flow/{id}
https://flow.manywho.com/api/package/1/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Create Package for Flow Version

Get the package of a specific version of a Flow Snapshot

path Parameters
id
required
string

The ID of the flow

version
required
string

The version of the flow

query Parameters
nullPasswords
boolean
Default: true

Whether the package should include password values.

Responses

200

Success

get /api/package/1/flow/{id}/{version}
https://flow.manywho.com/api/package/1/flow/{id}/{version}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Import Package

This allows you to import a flow package into a Tenant. It’s important to note that this is not the same as cloning a flow. If you import a flow package into a tenant that contains a flow with the same flow ID, the flow in the target tenant will be overwritten with the flow package being imported.

query Parameters
isActive
boolean
Default: false

Optional. Whether the package should be imported as an active snapshot

isDefault
boolean
Default: false

Optional. Whether the package should be immediately made the default version

uriMapping
Array of any
overwriteExisting
boolean
Default: true

Whether to overwrite any elements that already exist in the tenant with the versions included in the package. Enabled by default.

Request Body schema: application/json

The package content

string

Responses

200

The package was successfully imported

409

The package wasn't imported, as there are conflicting elements in the tenant

post /api/package/1/flow
https://flow.manywho.com/api/package/1/flow

Request samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Import Package with Flow Sharing Token

Import a flow via a unique sharing token

query Parameters
overwriteExisting
boolean
Default: true

Whether to overwrite any elements that already exist in the tenant with the versions included in the package. Enabled by default.

Request Body schema: application/json
token
string

Responses

200

The package was successfully imported

409

The package wasn't imported, as there are conflicting elements in the tenant

post /api/package/1/shared/flow
https://flow.manywho.com/api/package/1/shared/flow

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "token": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "allowJumping": true,
  • "authorization":
    {
    },
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "restrictions":
    {
    },
  • "startMapElementId": "string",
  • "stateExpirationLength": 0,
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Get Flow Sharing Token

Get the sharing token for the last published version of a flow

path Parameters
flow
required
string <uuid>
query Parameters
nullPasswords
boolean

Whether the shared package should include password values.

Responses

200

Success

post /api/package/1/flow/{flow}/share
https://flow.manywho.com/api/package/1/flow/{flow}/share

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "token": "string"
}

Get Flow Version Sharing Token

Get the sharing token for a specific version of a flow

path Parameters
flow
required
string <uuid>
version
required
string <uuid>
query Parameters
nullPasswords
boolean

Whether the shared package should include password values.

Responses

200

Success

post /api/package/1/flow/{flow}/{version}/share
https://flow.manywho.com/api/package/1/flow/{flow}/{version}/share

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "token": "string"
}

Play

Delete Player

Delete a player by name

path Parameters
name
required
string
tenantId
required
string

Responses

200

Success

delete /{tenantId}/play/{name}
https://flow.manywho.com/{tenantId}/play/{name}

Get Player

Get the contents of a player by name

path Parameters
playerName
required
string
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/play/{playerName}
https://flow.manywho.com/{tenantId}/play/{playerName}

Update Player

The player content should be sent as application/x-www-form-urlencoded; charset=UTF8 request with the body of the request set to =player content goes here

path Parameters
tenantId
required
string <uuid>
playerName
required
string
Request Body schema: application/x-www-form-urlencoded
player
string

Responses

200

Success

post /{tenantId}/play/{playerName}
https://flow.manywho.com/{tenantId}/play/{playerName}

Get Players

Get the names of all the players available in this tenant

path Parameters
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/player
https://flow.manywho.com/{tenantId}/player

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • "string"
]

Get Players

Get the names of all the players available in this tenant

path Parameters
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/play
https://flow.manywho.com/{tenantId}/play

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • "string"
]

Flow

Load Flow by Name

path Parameters
name
required
string

The name of the flow to load

Responses

200

Success

get /api/run/1/flow/name/{name}
https://flow.manywho.com/api/run/1/flow/name/{name}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "startMapElementId": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Load Flow by ID

path Parameters
id
required
string <uuid>

The ID of the flow to load

Responses

200

Success

get /api/run/1/flow/{id}
https://flow.manywho.com/api/run/1/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "comment": "string",
  • "dateCreated": "2020-01-27T10:47:06Z",
  • "dateModified": "2020-01-27T10:47:06Z",
  • "developerName": "string",
  • "developerSummary": "string",
  • "id":
    {
    },
  • "isActive": true,
  • "isDefault": true,
  • "startMapElementId": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

List Flows

Used to list and filter existing snapshotted flows.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of flows where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of flows where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/run/1/flow
https://flow.manywho.com/api/run/1/flow

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Run

The Run API provides all of the features of your executing Flow applications. When you build a Flow on the ManyWho Platform, it is exposed through this API:

  1. The Player UI code works with this API to generate the Pages, Navigation, Outcomes, etc.
  2. A number of Services, such as the Twilio Service, use this API to generate text-to-speech versions of the UI.
  3. Asynchronous messages and Listeners use this API to notify the Flow State of events.
  4. Applications can use this API to query Flows available to Run.
  5. 3rd party applications can use this API to authenticate Users and we can also provide SSO solutions information about the various authenticating end-points.

The Run API is perhaps the most important part of the Platform as it represents everything that is needed to run your Flow applications.

Authenticate (OAuth 1.0a)

Used to authenticate with OAuth 1.0a.

query Parameters
oauth_token
string

The OAuth authentication token to authenticate with.

oauth_verifier
string

The OAuth authentication verifier to authenticate with.

oauth_error
string

Responses

200

Success

get /api/run/1/oauth
https://flow.manywho.com/api/run/1/oauth

Authenticate (OAuth 2.0)

Used to authenticate with OAuth 2.0.

query Parameters
code
string

The OAuth authentication code the authenticate with.

state
string

The OAuth authentication state the authenticate with.

error
string

Provide an error code to throw an error with that code.

error_description
string

The error description to throw with the error code.

Responses

200

Success

get /api/run/1/oauth2
https://flow.manywho.com/api/run/1/oauth2

Authenticate (SAML)

Used to authenticate with SAML

Request Body schema: multipart/form-data
SAMLResponse
string
RelayState
string

Responses

200

Success

post /api/run/1/saml
https://flow.manywho.com/api/run/1/saml

Get Authentication Context

When you initialize a Flow, you are provided with the authentication context in the response.

However, you can also retrieve and login to Services individually.

It’s important to note that despite authentication being done against a Flow state, the returned Runtime Authentication Token is valid across all Flow States.

path Parameters
stateId
required
string

The unique identifier of the Flow state.

query Parameters
serviceElementId
string

The serviceElmentId of the Service to get the authentication context of.

Responses

200

Success

get /api/run/1/authentication/{stateId}
https://flow.manywho.com/api/run/1/authentication/{stateId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authenticationType": "string",
  • "directoryId": "string",
  • "directoryName": "string",
  • "loginUrl": "string"
}

Authenticate

Authenticate with the given authentication credentials to the given state

path Parameters
stateId
required
string

The unique identifier of the Flow state to authenticate to.

query Parameters
serviceElementId
string

The Service element id of the Service to authenticate to.

Request Body schema: application/json
authenticationType
string

The type of authentication being performed

code
string

The OAuth2 code

configurationValues
Array of objects (EngineValueAPI)

Any additional configuration values that may have been applied by the engine to help with authentication.

instanceUrl
string

The particular instance of the directory. For services such as salesforce.com, this is either "https://login.salesforce.com" (default) or "https://test.salesforce.com".

loginUrl
string

The REST endpoint for the plugin providing the identity

password
string

The password for your account in the directory

platformUri
string

The URI of the Flow platform that sent the request

redirectUri
string

The OAuth2 redirect URI

sessionToken
string

The session token for the directory. For services such as salesforce.com, this is the sessionId

sessionUrl
string

The session URL for the directory. For services such as salesforce.com, this is the pod instance you are currently logged into

tenantId
string
token
string

The account token for the directory. For OAuth2 integration, this the access token

username
string

The username for your account in the directory

verifier
string

The OAuth1.0 verifier

Responses

200

Success

post /api/run/1/authentication/{stateId}
https://flow.manywho.com/api/run/1/authentication/{stateId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authenticationType": "string",
  • "code": "string",
  • "configurationValues":
    [
    ],
  • "instanceUrl": "string",
  • "loginUrl": "string",
  • "password": "string",
  • "platformUri": "string",
  • "redirectUri": "string",
  • "sessionToken": "string",
  • "sessionUrl": "string",
  • "tenantId": "string",
  • "token": "string",
  • "username": "string",
  • "verifier": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Authorization Check

Check if the currently authenticated user has permission to access the state at its current position

path Parameters
state
required
string <uuid>

The unique identifier of the Flow state to check the current user against.

Responses

200

Success

get /api/run/1/authorization/{state}
https://flow.manywho.com/api/run/1/authorization/{state}

Get Navigation

Activate a navigation and if the current Flow state is on a navigation item, then that item is highlighted.

path Parameters
stateId
required
string

The unique identifier of the Flow state.

Request Body schema: application/json

The details of the navigation to activate.

culture
object (CultureAPI)
navigationElementId
string
stateId
string
stateToken
string

Responses

200

Success

post /api/run/1/navigation/{stateId}
https://flow.manywho.com/api/run/1/navigation/{stateId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "navigationElementId": "string",
  • "stateId": "string",
  • "stateToken": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "developerName": "string",
  • "isEnabled": true,
  • "isVisible": true,
  • "label": "string",
  • "navigationItemDataResponses":
    [
    ],
  • "navigationItemResponses":
    [
    ],
  • "stateId": "string",
  • "tags":
    [
    ]
}

Flow Out

Initiate a flow out from an Outcome that is configured with a Flow Out.

path Parameters
stateId
required
string

The unique identifier of the Flow state.

selectedOutcomeId
required
string

The outcome to Flow Out through.

Responses

200

Success

post /api/run/1/state/out/{stateId}/{selectedOutcomeId}
https://flow.manywho.com/api/run/1/state/out/{stateId}/{selectedOutcomeId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorizationContext":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "currentStreamId": "string",
  • "navigationElementReferences":
    [
    ],
  • "stateId": "string",
  • "stateToken": "string",
  • "statusCode": "string"
}

Initialize a Flow

Used to initialize a flow

Request Body schema: application/json
annotations
object

Annotations take the form of {"mykey":"myvalue"}. Any annotations added to the State will be persisted for the duration of the Flow. Annotations are passed to the executing player and also through to Services. Annotations can be changed at any time through the execution of the Flow.

externalIdentifier
string

An arbitrary external identifier that can be used to query for a State.

flowId
object (FlowIdAPI)

A composite unique identifier assigned by the platform, which should not be included for new flows.

inputs
Array of objects (EngineValueAPI)

An array of engine value objects that will be used to assign values in the flow at initialization.

joinPlayerUrl
string

The location of the player that should be used for sharing and notifications when joining a running flow. The service will automatically append the "join" parameter to this url so the player knows which flow and state it is playing (the "join" parameter is the state identifier).

mode
string

The mode you wish to run the flow in. The mode is mainly useful for debugging purposes as you can step through the flow and also view state information to check everything is working as expected.

parentStateId
string

The unique identifier for the parent State that "spawned" this State. This property is assigned when a Flow calls a Sub-Flow. The Sub-Flow will have this property assigned referencing the parent Flow.

playerUrl
string

The location of the player that should be used for sharing and notifications when first running the flow. The service will automatically append the "flow-id" parameter to this url so the player knows which flow it is playing.

reportingMode
string

The reporting mode under which you want to run this State of a Flow.

stateId
string

The unique identifier for an existing State. This parameter should be used if the first initialization request was rejected due to access being denied due to authentication. If you do not re-use this stateId property, your inputs will not be correctly assigned.

Responses

200

Success

post /api/run/1
https://flow.manywho.com/api/run/1

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "externalIdentifier": "string",
  • "flowId":
    {
    },
  • "inputs":
    [
    ],
  • "joinPlayerUrl": "string",
  • "mode": "string",
  • "parentStateId": "string",
  • "playerUrl": "string",
  • "reportingMode": "string",
  • "stateId": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorizationContext":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "currentStreamId": "string",
  • "navigationElementReferences":
    [
    ],
  • "stateId": "string",
  • "stateToken": "string",
  • "statusCode": "string"
}

Initialize a Flow (Simple)

Used to initialise a flow and authenitcate into it.

Request Body schema: application/json

The details of the Flow with a username and password to authenticate with.

developerName
string
id
string <uuid>
inputs
Array of objects (EngineValueAPI)
password
string
username
string
versionId
string <uuid>

Responses

200

Success

post /api/run/1/state
https://flow.manywho.com/api/run/1/state

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "id": "string",
  • "inputs":
    [
    ],
  • "password": "string",
  • "username": "string",
  • "versionId": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "annotations":
    {
    },
  • "authorizationContext":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "currentStreamId": "string",
  • "frames":
    [
    ],
  • "invokeType": "string",
  • "joinFlowUri": "string",
  • "mapElementInvokeResponses":
    [
    ],
  • "navigationElementReferences":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "outputs":
    [
    ],
  • "parentStateId": "string",
  • "preCommitStateValues":
    [
    ],
  • "runFlowUri": "string",
  • "stateId": "string",
  • "stateLog":
    {
    },
  • "stateToken": "string",
  • "stateValues":
    [
    ],
  • "statusCode": "string",
  • "voteResponse":
    {
    },
  • "waitMessage": "string"
}

Join Flow State

Used to join the state provided

path Parameters
stateId
required
string

The unique identifier of the Flow state.

query Parameters
mode
string

The mode in which to join the state.

Responses

200

Success

get /api/run/1/state/{stateId}
https://flow.manywho.com/api/run/1/state/{stateId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "annotations":
    {
    },
  • "authorizationContext":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "currentStreamId": "string",
  • "frames":
    [
    ],
  • "invokeType": "string",
  • "joinFlowUri": "string",
  • "mapElementInvokeResponses":
    [
    ],
  • "navigationElementReferences":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "outputs":
    [
    ],
  • "parentStateId": "string",
  • "preCommitStateValues":
    [
    ],
  • "runFlowUri": "string",
  • "stateId": "string",
  • "stateLog":
    {
    },
  • "stateToken": "string",
  • "stateValues":
    [
    ],
  • "statusCode": "string",
  • "voteResponse":
    {
    },
  • "waitMessage": "string"
}

Invoke Flow State

Used to invoke a flow state

path Parameters
stateId
required
string

The unique identifier of the Flow state.

Request Body schema: application/json
annotations
object

Key value pairs you wish to annotate to the flow. Annotations take the form of {"mykey":"myvalue"}. Any annotations added to the state will be persisted for the duration of the flow. Annotations are passed to the executing player and also through to plugin services. Annotations can be changed at any time through the execution of the flow.

culture
object (CultureAPI)
currentMapElementId
string

The unique identifier for the map element the user is currently executing against.

geoLocation
object (GeoLocationAPI)
invokeType
string

The way you want to invoke the engine as part of this request. The user may be navigating forward, or you may be wanting to perform a sync operation to update the UI due to another user making a change.

mapElementInvokeRequest
object (MapElementInvokeRequestAPI)
mode
string

The mode you wish to run the flow in. The mode is mainly useful for debugging purposes as you can step through the flow and also view state information to check everything is working as expected.

navigationElementId
string

The unique identifier for the navigation element that's being used to drive the navigation scheme.

selectedMapElementId
string

When executing a Flow that has the allowJumping property set to 'true', the user can move to any Map Element in the Flow regardless of navigation or outcomes. This is the unique identifier of the Map Element the user wishes to navigate to and must be used with an InvokeType of 'NAVIGATE'.

selectedNavigationItemId
string

When executing using an InvokeType of 'NAVIGATE', this is the selected navigation item the user wishes to move to in the Flow.

stateId
string

The unique identifier for the initialized flow state. The state identifier is needed throughout the execution of the flow as it is the pointer that points the engine to the correct running instance of a flow.

stateToken
string

The unique identifier for the token response from the state. The state token identifier changes with every cycle of request/response. The token is needed as it tells the engine how in-sync your request is with the current service side state.

Responses

200

Success

post /api/run/1/state/{stateId}
https://flow.manywho.com/api/run/1/state/{stateId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "geoLocation":
    {
    },
  • "invokeType": "string",
  • "mapElementInvokeRequest":
    {
    },
  • "mode": "string",
  • "navigationElementId": "string",
  • "selectedMapElementId": "string",
  • "selectedNavigationItemId": "string",
  • "stateId": "string",
  • "stateToken": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "alertEmail": "string",
  • "annotations":
    {
    },
  • "authorizationContext":
    {
    },
  • "culture":
    {
    },
  • "currentMapElementId": "string",
  • "currentStreamId": "string",
  • "frames":
    [
    ],
  • "invokeType": "string",
  • "joinFlowUri": "string",
  • "mapElementInvokeResponses":
    [
    ],
  • "navigationElementReferences":
    [
    ],
  • "notAuthorizedMessage": "string",
  • "outputs":
    [
    ],
  • "parentStateId": "string",
  • "preCommitStateValues":
    [
    ],
  • "runFlowUri": "string",
  • "stateId": "string",
  • "stateLog":
    {
    },
  • "stateToken": "string",
  • "stateValues":
    [
    ],
  • "statusCode": "string",
  • "voteResponse":
    {
    },
  • "waitMessage": "string"
}

Response From Service

Used to get the invoke type of the service response provided

Request Body schema: application/json
annotations
object

Any runtime annotations that were provided to the State plus any additional annotations the Service may be providing.

culture
object (CultureAPI)
invokeType
string

Tells the engine what this service would like it to do. At the moment, there are really only two possible commands: WAIT (to tell the engine to wait for a completed response) or DONE (to tell the engine that it has completed its work.

mode
string

The mode which the Service would like the Flow State to execute under.

outputs
Array of objects (EngineValueAPI)

The output values from the Service being sent back to the Flow State. Outputs will be applied to the Flow State even if the InvokeType is set to WAIT.

rootFaults
object

Any faults that have happened in the Service that should be reported up to the Flow State.

selectedOutcomeId
string

The Outcome the Service would like the Flow to follow. If the Outcome has Rules, the Service request for this outcome will be ignored unless the Rules are also satisfied.

tenantId
string

The unique identifier for the tenant that made the request to the Service.

token
string

The execution token needed for any callback responses from the Service.

valueFaults
Array of objects (ValueFaultAPI)

Any faults that are directly attributed to an input value provided in the ServiceRequest. If a ValueFault is specified, ManyWho will attempt to match this error with any input fields that are bound to that Value.

waitMessage
string

The "wait" message that should be provided to users waiting for the Service to complete its tasks.

Responses

200

Success

post /api/run/1/response
https://flow.manywho.com/api/run/1/response

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "culture":
    {
    },
  • "invokeType": "string",
  • "mode": "string",
  • "outputs":
    [
    ],
  • "rootFaults":
    {
    },
  • "selectedOutcomeId": "string",
  • "tenantId": "string",
  • "token": "string",
  • "valueFaults":
    [
    ],
  • "waitMessage": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Event

Used to get the invoke type of the service event provided

Request Body schema: application/json
annotations
object

Any runtime annotations that were provided to the State plus any additional annotations the Service may be providing.

culture
object (CultureAPI)
listeningEventValue
object (EngineValueAPI)
tenantId
string

The unique identifier for the tenant that made the request to the Service.

token
string

The execution token needed for any callback responses from the Service.

Responses

200

Success

post /api/run/1/event
https://flow.manywho.com/api/run/1/event

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "culture":
    {
    },
  • "listeningEventValue":
    {
    },
  • "tenantId": "string",
  • "token": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Add Listener

Used to add a listener to the state stateId from the details in the request body

path Parameters
stateId
required
string
Request Body schema: application/json

The details of the state listener used to set up the new listener

annotations
object
callbackUri
string
listenType
string
stateId
string

Responses

200

Success

post /api/run/1/state/{stateId}/listener
https://flow.manywho.com/api/run/1/state/{stateId}/listener

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "callbackUri": "string",
  • "listenType": "string",
  • "stateId": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "annotations":
    {
    },
  • "callbackUri": "string",
  • "id": "string",
  • "listenType": "string",
  • "stateId": "string"
}

Remove Listener

Used to remove the listener on the state stateId with the id listenerId

path Parameters
stateId
required
string

The unique identifier of the Flow state.

listenerId
required
string

The unique identifier of the listener.

Responses

200

Success

delete /api/run/1/state/{stateId}/listener/{listenerId}
https://flow.manywho.com/api/run/1/state/{stateId}/listener/{listenerId}

Import State

Used to import a state into the tenant from JSON

Request Body schema: application/json

The JSON of the state to be imported.

string

Responses

200

Success

post /api/run/1/state/package
https://flow.manywho.com/api/run/1/state/package

Request samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Export State

Used to export a state from the tenant into JSON.

path Parameters
stateId
required
string

The unique identifier of the Flow state.

Responses

200

Success

get /api/run/1/state/package/{stateId}
https://flow.manywho.com/api/run/1/state/package/{stateId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
"string"

Check Flow State Changes

Used to check if a change has occurred to the state, by comparing the current state token of the state with the provided one

path Parameters
stateId
required
string <uuid>

The unique identifier of the Flow state.

stateToken
required
string <uuid>

The state token to compare to the current state token of the Flow state

Responses

200

Success

get /api/run/1/state/{stateId}/ping/{stateToken}
https://flow.manywho.com/api/run/1/state/{stateId}/ping/{stateToken}

Response samples

Content type
application/json
Copy
Expand all Collapse all
true

Get Flow State Value

Used to get the value for the id provided in the flow state

path Parameters
stateId
required
string <uuid>

The unique identifier of the Flow state.

id
required
string <uuid>

The unique identifier of the Flow value.

Responses

200

Success

get /api/run/1/state/{stateId}/values/{id}
https://flow.manywho.com/api/run/1/state/{stateId}/values/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "contentValue": "string",
  • "developerName": "string",
  • "objectData":
    [
    ],
  • "typeElementDeveloperName": "string",
  • "typeElementId": "string",
  • "typeElementPropertyDeveloperName": "string",
  • "typeElementPropertyId": "string",
  • "valueElementId": "string"
}

Get Flow State Value by Name

Used to get the value for the name provided in the flow state

path Parameters
stateId
required
string <uuid>

The unique identifier of the Flow state.

name
required
string

The name of the Flow value.

Responses

200

Success

get /api/run/1/state/{stateId}/values/name/{name}
https://flow.manywho.com/api/run/1/state/{stateId}/values/name/{name}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "contentValue": "string",
  • "developerName": "string",
  • "objectData":
    [
    ],
  • "typeElementDeveloperName": "string",
  • "typeElementId": "string",
  • "typeElementPropertyDeveloperName": "string",
  • "typeElementPropertyId": "string",
  • "valueElementId": "string"
}

Get Flow State Values

Used to get all the values in the flow state. This endpoint requires a runtime authentication token, which means it can only be used with non-public flows.

path Parameters
stateId
required
string <uuid>

The unique identifier of the Flow state.

Responses

200

Success

get /api/run/1/state/{stateId}/values
https://flow.manywho.com/api/run/1/state/{stateId}/values

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Set Flow State Values

Used to set values in the flow state with the given data. This endpoint requires a runtime authentication token, which means it can only be used with non-public flows.

path Parameters
stateId
required
string <uuid>

The unique identifier of the Flow state.

Request Body schema: application/json

The new details for a list of values.

Array
contentType
string

The content type of the value you are passing into the flow. The content types are specified by the ContentType enumeration.

contentValue
string

The actual content value being assigned to the value in the flow. This property should be used for all "primitive", non-typed values in your flow. For example, if you are referencing a value called "First Name", this would be the value you actually want to assign to it: e.g. "Steve".

developerName
string
objectData
Array of objects (ObjectAPI)
typeElementDeveloperName
string

The developer name for the object type of the value in the flow being assigned.

typeElementId
string

The unique identifier for the object type of the value in the flow being assigned. Using the typeElementId ensures that your player is guaranteed to be referencing the correct object type. If you use the typeElementDeveloperName property, a change in the type name can break the integration. We ask that you specify the type as we may in future support type casting and we therefore want to know the type you're passing in so we can validate it is correct before mapping to the super type.

typeElementPropertyDeveloperName
string

The developer name for the object property of the value in the flow being assigned.

typeElementPropertyId
string

The unique identifier for the object property of the value in the flow being assigned. Typed objects all have properties. Using the typeElementPropertyId allows you to assign a property in an object value as opposed to the whole value. As with the other identifier references, using the typeElementPropertyId ensures that your player is guaranteed to be assigning the correct value. Using the typeElementPropertyDeveloperName makes it possible to break the integration if the author changes the developerName of a property in the type.

valueElementId
string

The unique identifier for the value in the flow being assigned. Using the id to reference the value ensures that your player is guaranteed to be assigning the correct value. If you reference a value by developerName, it is possible for the author to break integration points simply by changing the name of the value. You must provide an 'id' or a 'developerName'.

Responses

200

Success

post /api/run/1/state/{stateId}/values
https://flow.manywho.com/api/run/1/state/{stateId}/values

Request samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Data

Load Data from Service

Request Body schema: application/json
authorization
object (AuthorizationAPI)
command
object (CommandRequestAPI)
configurationValues
Array of objects (EngineValueAPI)

The configuration information that comes from the service element.

culture
object (CultureAPI)
listFilter
object (ListFilterAPI)
objectData
Array of objects (ObjectAPI)

The list of objects to insert, update or delete.

objectDataType
object (ObjectDataTypeAPI)
stateId
string

The state id that allows us to make the correct version references.

token
string

The unique token for this data job. The token can be used to help the plugin cache multiple data calls. If the token is provided, we can match it up with a previous data request - if we choose to cache it.

typeElementBindingId
string

The Id for the service element associated with this object data. The service element will give us the connection settings and allow us to validate various info around the type.

Responses

200

Success

post /api/service/1/data
https://flow.manywho.com/api/service/1/data

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "command":
    {
    },
  • "configurationValues":
    [
    ],
  • "culture":
    {
    },
  • "listFilter":
    {
    },
  • "objectData":
    [
    ],
  • "objectDataType":
    {
    },
  • "stateId": "string",
  • "token": "string",
  • "typeElementBindingId": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "hasMoreResults": true,
  • "objectData":
    [
    ],
  • "offsetToken": "string",
  • "stateId": "string"
}

Files

Load Files from Service

Request Body schema: application/json
authorization
object (AuthorizationAPI)
configurationValues
Array of objects (EngineValueAPI)

The configuration information that comes from the service element.

culture
object (CultureAPI)
listFilter
object (FileListFilterAPI)
resourceFile
string

The resouce path to use when sourcing a specific file.

resourcePath
string

The resouce path to use when sourcing the files.

serviceElementId
string

The service to grab the files from.

stateId
string

The state id that allows us to make the correct version references.

token
string

The unique token for this data job. The token can be used to help the plugin cache multiple data calls. If the token is provided, we can match it up with a previous data request - if we choose to cache it.

Responses

200

Success

post /api/service/1/file
https://flow.manywho.com/api/service/1/file

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "configurationValues":
    [
    ],
  • "culture":
    {
    },
  • "listFilter":
    {
    },
  • "resourceFile": "string",
  • "resourcePath": "string",
  • "serviceElementId": "string",
  • "stateId": "string",
  • "token": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "hasMoreResults": true,
  • "objectData":
    [
    ],
  • "offsetToken": "string",
  • "stateId": "string"
}

Upload File to Service

Responses

200

Success

post /api/service/1/file/content
https://flow.manywho.com/api/service/1/file/content

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "hasMoreResults": true,
  • "objectData":
    [
    ],
  • "offsetToken": "string",
  • "stateId": "string"
}

Delete File from Service

Request Body schema: application/json
authorization
object (AuthorizationAPI)
configurationValues
Array of objects (EngineValueAPI)

The configuration information that comes from the service element.

culture
object (CultureAPI)
listFilter
object (FileListFilterAPI)
resourceFile
string

The resouce path to use when sourcing a specific file.

resourcePath
string

The resouce path to use when sourcing the files.

serviceElementId
string

The service to grab the files from.

stateId
string

The state id that allows us to make the correct version references.

token
string

The unique token for this data job. The token can be used to help the plugin cache multiple data calls. If the token is provided, we can match it up with a previous data request - if we choose to cache it.

Responses

200

Success

post /api/service/1/file/delete
https://flow.manywho.com/api/service/1/file/delete

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "authorization":
    {
    },
  • "configurationValues":
    [
    ],
  • "culture":
    {
    },
  • "listFilter":
    {
    },
  • "resourceFile": "string",
  • "resourcePath": "string",
  • "serviceElementId": "string",
  • "stateId": "string",
  • "token": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "culture":
    {
    },
  • "hasMoreResults": true,
  • "objectData":
    [
    ],
  • "offsetToken": "string",
  • "stateId": "string"
}

Invoker

List Invoker Requests

Get the metadata for every request sent to a Service

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests
https://flow.manywho.com/api/service/1/requests

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Get Invoker Requests

Get the metadata for a specific request sent to a service

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/service/1/requests/{id}
https://flow.manywho.com/api/service/1/requests/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "attributes":
    {
    },
  • "content": "string",
  • "createdAt": "2020-01-27T10:47:06Z",
  • "failures":
    [
    ],
  • "id": "string",
  • "method": "string",
  • "responses":
    [
    ],
  • "stateId": "string",
  • "tenantId": "string",
  • "uri": "string"
}

Retry Invoker Requests

Send the request to the service again

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/service/1/requests/{id}/retry
https://flow.manywho.com/api/service/1/requests/{id}/retry

List Flow Invoker Requests

Get the metadata for every request sent to a Service from a specific Flow

path Parameters
id
required
string <uuid>

The flow ID

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/flow/{id}
https://flow.manywho.com/api/service/1/requests/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List Flow Version Invoker Requests

Get the metadata for every request sent to a Service from a specific version of a Flow

path Parameters
id
required
string <uuid>

The flow ID

version
required
string <uuid>

The flow version

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/flow/{id}/{version}
https://flow.manywho.com/api/service/1/requests/flow/{id}/{version}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

List State Invoker Requests

Get the metadata for every request sent to a Service from a specific State

path Parameters
id
required
string <uuid>

The state ID

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/state/{id}
https://flow.manywho.com/api/service/1/requests/state/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "_links":
    {
    },
  • "_meta":
    {
    },
  • "items":
    [
    ]
}

Cultures

The content value culture object represents a language or brand supported by the tenant.

Content value cultures are used to specify the language/brand options that are available for the tenant. By default all tenants have a content value culture for USA (English). However, for multi-national/language use-cases, others can be specified. They follow the ISO conventions for language. However, the platform also supports a fourth variation on the standard ISO properties; this is brand. As a result, content value culture objects can also be used to specify white-labelling or single language variations on flow content.

List Content Value Cultures

Used to get existing content value cultures.

Responses

200

Success

get /api/translate/1/culture
https://flow.manywho.com/api/translate/1/culture

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create/Update Content Value Culture

Used to create new content value cultures or update existing ones.

Request Body schema: application/json
brand
string

The brand for the culture.

country
string

The country for the culture.

developerName
string

The developer name for the culture.

developerSummary
string

The developer summary for the culture.

id
string

The id for the culture.

language
string

The language for the culture.

variant
string

The variant for the culture.

Responses

200

Success

post /api/translate/1/culture
https://flow.manywho.com/api/translate/1/culture

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "brand": "string",
  • "country": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "id": "string",
  • "language": "string",
  • "variant": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "brand": "string",
  • "country": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "id": "string",
  • "language": "string",
  • "variant": "string"
}

Get Content Value Culture

Used to get an existing content value culture.

path Parameters
id
required
string <uuid>

The unique identifier for the content value culture

Responses

200

Success

get /api/translate/1/culture/{id}
https://flow.manywho.com/api/translate/1/culture/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "brand": "string",
  • "country": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "id": "string",
  • "language": "string",
  • "variant": "string"
}

Delete Content Value Culture

Used to delete an existing content value culture.

path Parameters
id
required
string <uuid>

Responses

200

Success

delete /api/translate/1/culture/{id}
https://flow.manywho.com/api/translate/1/culture/{id}

Flow

The flow translation object provides all of the content elements and properties in a flow that can be translated.

The flow translation object provides every element in the flow that is available for translation. It therefore provides all of the content in the flow, regardless of whether or not the elements are shared (such as value and page elements) or specific to the flow (such as map or navigation elements). The flow translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

List Flow Translations

Used to filter existing flow objects that are available for translation.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of flows where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of flows where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/translate/1/flow
https://flow.manywho.com/api/translate/1/flow

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Get Flow Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{id}
https://flow.manywho.com/api/translate/1/flow/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "developerName": "string",
  • "developerSummary": "string",
  • "editingToken": "string",
  • "id": "string",
  • "mapElements":
    [
    ],
  • "navigationElements":
    [
    ],
  • "pageElements":
    [
    ],
  • "startMapElementId": "string",
  • "typeElements":
    [
    ],
  • "valueElements":
    [
    ]
}

Map Element

The map element translation object provides all of the content properties in a map element that can be translated.

The map element translation object also includes additional properties to help translators identity the purpose/location of the content being translated.

Update Map Element Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
Request Body schema: application/json
contentValueDocument
object (ContentValueDocumentAPI)
developerName
string
developerSummary
string
elementType
string
id
string
notAuthorizedMessageContentValueId
string
outcomes
Array of objects (OutcomeTranslationResponseAPI)
postUpdateMessageContentValueId
string
statusMessageContentValueId
string
userContentContentValueId
string

Responses

200

Success

post /api/translate/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/map

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "notAuthorizedMessageContentValueId": "string",
  • "outcomes":
    [
    ],
  • "postUpdateMessageContentValueId": "string",
  • "statusMessageContentValueId": "string",
  • "userContentContentValueId": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "notAuthorizedMessageContentValueId": "string",
  • "outcomes":
    [
    ],
  • "postUpdateMessageContentValueId": "string",
  • "statusMessageContentValueId": "string",
  • "userContentContentValueId": "string"
}

Get Map Element Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/map/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "notAuthorizedMessageContentValueId": "string",
  • "outcomes":
    [
    ],
  • "postUpdateMessageContentValueId": "string",
  • "statusMessageContentValueId": "string",
  • "userContentContentValueId": "string"
}

Navigation Element

This element allow you to have one or more translations for the element navigation. The navigation element translation will show the information in runtime depending on which culture is choose when the flow runs.

Update Navigation Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
Request Body schema: application/json
contentValueDocument
object (ContentValueDocumentAPI)
developerName
string
developerSummary
string
elementType
string
id
string
labelContentValueId
string
navigationItems
Array of objects (NavigationItemTranslationResponseAPI)

Responses

200

Success

post /api/translate/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/navigation

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "navigationItems":
    [
    ]
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "navigationItems":
    [
    ]
}

Get Navigation Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/navigation/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "navigationItems":
    [
    ]
}

Page Element

The page element translation object provides all of the content properties in a page element that can be translated.

The page element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Page Translation

Request Body schema: application/json
contentValueDocument
object (ContentValueDocumentAPI)
developerName
string
developerSummary
string
elementType
string
id
string
labelContentValueId
string
pageComponents
Array of objects (PageComponentTranslationResponseAPI)
pageContainers
Array of objects (PageContainerTranslationResponseAPI)

Responses

200

Success

post /api/translate/1/element/page
https://flow.manywho.com/api/translate/1/element/page

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "pageComponents":
    [
    ],
  • "pageContainers":
    [
    ]
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "pageComponents":
    [
    ],
  • "pageContainers":
    [
    ]
}

Get Page Transation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/page/{id}
https://flow.manywho.com/api/translate/1/element/page/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "labelContentValueId": "string",
  • "pageComponents":
    [
    ],
  • "pageContainers":
    [
    ]
}

Translate

When building flows on the platform, all “content” is automatically separated from “logic”. This means that all flows are automatically ready for internationalization. The result being that you can write one flow, but adjust the content accordingly for each content value culture needed.

The Translate APIs allow builders to manage content translations for all flows and elements.

Type Element

The type element translation object provides all of the content properties in a type element that can be translated.

The type element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Type Translation

Request Body schema: application/json
contentValueDocument
object (ContentValueDocumentAPI)
developerName
string
developerSummary
string
elementType
string
id
string
properties
Array of objects (PropertyTranslationResponseAPI)

Responses

200

Success

post /api/translate/1/element/type
https://flow.manywho.com/api/translate/1/element/type

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ]
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ]
}

Get Type Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/type/{id}
https://flow.manywho.com/api/translate/1/element/type/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentValueDocument":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string",
  • "properties":
    [
    ]
}

Value Element

The value element translation object provides all of the content properties in a value element that can be translated.

The value element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Value Translation

Request Body schema: application/json
contentFormatContentValueId
string
contentType
string
contentValueDocument
object (ContentValueDocumentAPI)
defaultContentValueContentValueId
string
developerName
string
developerSummary
string
elementType
string
id
string

Responses

200

Success

post /api/translate/1/element/value
https://flow.manywho.com/api/translate/1/element/value

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentFormatContentValueId": "string",
  • "contentType": "string",
  • "contentValueDocument":
    {
    },
  • "defaultContentValueContentValueId": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentFormatContentValueId": "string",
  • "contentType": "string",
  • "contentValueDocument":
    {
    },
  • "defaultContentValueContentValueId": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string"
}

Get Value Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/value/{id}
https://flow.manywho.com/api/translate/1/element/value/{id}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "contentFormatContentValueId": "string",
  • "contentType": "string",
  • "contentValueDocument":
    {
    },
  • "defaultContentValueContentValueId": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "elementType": "string",
  • "id": "string"
}